In today's information age, computers and other types of communication devices are often interconnected over communication networks. Examples of communications networks include private and public local area networks, metropolitan area networks, wide area networks, and intranets. Perhaps the most well-known and widely used communication network is the Internet.
FIG. 1 schematically shows a representation of a communication system as known in the art. Here, a source communication device 110 is in communication with a destination communication device 130 over a communication network such as the Internet 120. The Internet is based on a suite of protocols known as TCP/IP, which is promulgated by the Internet Engineering Task Force (“IETF”). The protocols in the TCP/IP suite are generally defined in terms of a hierarchy (stack) having various protocol layers, where each layer uses communication services provided by the protocol layer immediately below it in the stack and provides communication services to the protocol layer immediately above it in the stack.
The Internet Protocol (“IP”), part of the TCP/IP suite of protocols, is a network layer protocol used in the Internet and in other networks. IP messages (often referred to as “datagrams”) are routed through the network based on source and destination IP addresses. Because there is no concept of an end-to-end connection at the IP layer, and because IP does not include mechanisms for ensuring delivery of IP datagrams to the destination, IP datagrams may be dropped by the communication network or routed over different paths so as to arrive at the destination out-of-order. Thus, IP is considered to be a connectionless, unreliable protocol.
Today, there are two commonly-used versions of IP, namely IP version 4 (“IPv4”) and IP version 6 (“IPv6”). IPv4 is described in IETF RFC 791, which is hereby incorporated herein by reference in its entirety. IPv6 is described in IETF RFC 2460, which is hereby incorporated herein by reference in its entirety. The main purpose of both versions is to provide unique global computer addressing to ensure that communicating devices can identify one another. One of the main distinctions between IPv4 and IPv6 is that IPv4 uses 32-bit addresses, whereas IPv6 utilizes 128 bit addresses. In addition, IPv6 can support larger datagram sizes.
IPv4 datagrams have the following general header format:

IPv6 datagrams have the following general header format:

IP datagrams are often used to encapsulate and carry messages from higher layer protocols. In the TCP/IP suite of protocols, the layer above the IP layer is referred to as the transport layer. One commonly-used transport layer protocol is the Transmission Control Protocol (“TCP”). TCP is described in IETF RFC 793, which is hereby incorporated herein by reference in its entirety. Transport layer messages (often referred to as “segments”) are essentially used to carry information from a particular application in the source to the corresponding application in the destination, whereas the IP datagram itself is essentially used as an envelope to carry the TCP segment from the source to the destination. TCP segments can be carried over other protocols and therefore TCP is not limited to use with IP.
TCP segments have the following general format:

The following is a representation of the format of the TCP header:

As shown above, the TCP header includes a 16-bit source port field, a 16-bit destination port field, a 32-bit sequence number field, a 32-bit acknowledgement number field, a 4-bit data offset field, a 6-bit reserved field, a 6-bit control bits field, a 16-bit window field, a 16-bit checksum field, a 16-bit urgent pointer field, and an optional variable-length options field that is padded with zeros as necessary to make the options field an integer multiple of 32-bits.
IETF RFC 4413, which is hereby incorporated herein by reference in its entirety, describes TCP/IP field behavior.
As is generally known, TCP segments can be carried by protocols other than IP, e.g., TCP segments can be carried directly in Ethernet packets. Similarly, IP can be used to carry other higher layer protocols, e.g., User Datagram Protocol (UDP) and Internet Control Message Protocol (ICMP) messages.
TCP is considered to be a connection-oriented protocol in that an end-to-end connection is established between two TCP devices, specifically using a so-called “three-way handshake.” The device at one end of a TCP connection may tear down a connection for any number of reasons by sending a TCP reset (RST) packet, and RST packets can be sent for other reasons (e.g., even when there is no TCP connection established). In some TCP implementations, ASCII text may be included in the payload of a RST packet to indicate a reason for the reset. Generally speaking, such ASCII text is intended for use by humans and is really only useful if the ASCII text has been dumped or displayed.